/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package wypozyczalnia;

import com.mysql.jdbc.Connection;
import com.mysql.jdbc.PreparedStatement;
import commons.AuthenticationBean;
import commons.DbConnection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.faces.context.FacesContext;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;

/**
 *
 * @author Adrian
 */
public class AddUserManager {

    private String imie, nazwisko, dokument, seria, miejsce_ur, adres, miasto, kod, mail, telefon, login;
    Date data_ur;
    private boolean rejestracja;
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
    Date data = new Date();
    int id = 0;

    public void wczytaj() {
        try {
            Connection conn = (Connection) DbConnection.getConnection();
            FacesContext context = FacesContext.getCurrentInstance();
            HttpServletRequest myRequest = (HttpServletRequest) context.getExternalContext().getRequest();
            HttpSession mySession = myRequest.getSession();
            this.login = (String) mySession.getAttribute(AuthenticationBean.AUTH_KEY);
            java.sql.PreparedStatement ps = conn.prepareStatement("SELECT u.nazwisko,u.imie,u.dokument_tozsamosci,u.seria,u.data_ur,u.miejsce_ur,u.miasto,u.kod,ulica,u.telefon,u.email FROM uzytkownicy u, dane_logowania d WHERE u.ident_biblioteczny = d.ident_biblioteczny AND d.login=?");
            ps.setString(1,this.login);
            ResultSet rs = ps.executeQuery();
            System.out.println(login);
            
            while(rs.next()){

                this.imie=rs.getString("imie");
                System.out.println(imie + "asdfasdf");
                this.nazwisko=rs.getString("nazwisko");
                this.dokument=rs.getString("dokument_tozsamosci");
                this.seria=rs.getString("seria");
                this.data_ur=rs.getDate("data_ur");
                this.miejsce_ur=rs.getString("miejsce_ur");
                this.miasto=rs.getString("miasto");
                this.kod=rs.getString("kod");
                this.adres=rs.getString("ulica");
                this.telefon=rs.getString("telefon");
                this.mail=rs.getString("email");
            }
        } catch (SQLException ex) {
            Logger.getLogger(AddUserManager.class.getName()).log(Level.SEVERE, null, ex);
        }

    }

    public String update() {
        return "";
    }

    public String dodaj() {
        try {
            if (kod.length() == 5) {
                kod = new StringBuffer(kod).insert(2, "-").toString();
            }
            if (dokument.equals("0")) {
                dokument = "dowód osobisty";
            }
            Connection conn = (Connection) DbConnection.getConnection();
            PreparedStatement ps = (PreparedStatement) conn.prepareStatement("INSERT INTO `biblioteka`.`uzytkownicy` (`nazwisko` ,`imie` ,`dokument_tozsamosci` ,`seria` ,`data_ur` ,`miejsce_ur` ,`miasto` ,`kod` ,`ulica` ,`telefon` ,`email` ,`data_rej` ,`saldo`) VALUE (?,?,?,?,?,?,?,?,?,?,?,?,?)");
            ps.setString(1, this.nazwisko);
            ps.setString(2, this.imie);
            ps.setString(3, this.dokument);
            ps.setString(4, this.seria);
            ps.setString(5, sdf.format(this.data_ur));
            ps.setString(6, this.miejsce_ur);
            ps.setString(7, this.miasto);
            ps.setString(8, this.kod);
            ps.setString(9, this.adres);
            ps.setString(10, this.telefon);
            ps.setString(11, this.mail);
            ps.setString(12, sdf.format(data));
            if (rejestracja) {
                ps.setDouble(13, 0.0);
            } else {
                ps.setDouble(13, -10.0);
            }
            ps.executeUpdate();
            ps = (PreparedStatement) conn.prepareStatement("SELECT ident_biblioteczny FROM uzytkownicy WHERE imie=? AND nazwisko=? AND seria=? AND data_rej=?");
            ps.setString(1, this.imie);
            ps.setString(2, this.nazwisko);
            ps.setString(3, this.seria);
            ps.setString(4, sdf.format(data));
            ResultSet rs = ps.executeQuery();
            while (rs.next()) {
                id = rs.getInt("ident_biblioteczny");
            }
            ps = (PreparedStatement) conn.prepareStatement("INSERT INTO `biblioteka`.`dane_logowania` (`login`,`haslo`,`typ_uzytkownika`,`ident_biblioteczny`) VALUES (?,?,?,?)");
            ps.setString(1, this.login);
            ps.setString(2, this.nazwisko);
            ps.setString(3, "klient");
            ps.setInt(4, this.id);
            ps.executeUpdate();
            if (rejestracja) {
                ps = (PreparedStatement) conn.prepareStatement("INSERT INTO `biblioteka`.`wplaty` (`data_wplaty`,`kwota`,`ident_biblioteczny`) VALUES (?,?,?)");
                ps.setString(1, sdf.format(data));
                ps.setDouble(2, 10.0);
                ps.setInt(3, this.id);
                ps.executeUpdate();
            }
            imie = "";
            nazwisko = "";
            dokument = "";
            seria = "";
            miejsce_ur = "";
            adres = "";
            miasto = "";
            kod = "";
            mail = "";
            telefon = "";
            login = "";
            data_ur = new Date();
            return "dodano";
        } catch (SQLException ex) {
            Logger.getLogger(AddUserManager.class.getName()).log(Level.SEVERE, null, ex);
            return "error";
        }
    }

    public String getLogin() {
        return login;
    }

    public void setLogin(String login) {
        this.login = login;
    }

    public String getAdres() {
        return adres;
    }

    public void setAdres(String adres) {
        this.adres = adres;
    }

    public Date getData_ur() {
        return data_ur;
    }

    public void setData_ur(Date data_ur) {
        this.data_ur = data_ur;
    }

    public String getDokument() {
        return dokument;
    }

    public void setDokument(String dokument) {
        this.dokument = dokument;
    }

    public String getImie() {
        return imie;
    }

    public void setImie(String imie) {
        this.imie = imie;
    }

    public String getKod() {
        return kod;
    }

    public void setKod(String kod) {
        this.kod = kod;
    }

    public String getMail() {
        return mail;
    }

    public void setMail(String mail) {
        this.mail = mail;
    }

    public String getMiasto() {
        return miasto;
    }

    public void setMiasto(String miasto) {
        this.miasto = miasto;
    }

    public String getMiejsce_ur() {
        return miejsce_ur;
    }

    public void setMiejsce_ur(String miejsce_ur) {
        this.miejsce_ur = miejsce_ur;
    }

    public String getNazwisko() {
        return nazwisko;
    }

    public void setNazwisko(String nazwisko) {
        this.nazwisko = nazwisko;
    }

    public boolean isRejestracja() {
        return rejestracja;
    }

    public void setRejestracja(boolean rejestracja) {
        this.rejestracja = rejestracja;
    }

    public String getSeria() {
        return seria;
    }

    public void setSeria(String seria) {
        this.seria = seria;
    }

    public String getTelefon() {
        return telefon;
    }

    public void setTelefon(String telefon) {
        this.telefon = telefon;
    }

    private Object StringBuffer(String kod) {
        throw new UnsupportedOperationException("Not yet implemented");
    }
}
